﻿using System;
using System.Collections.Generic;
using GameEngine.Libs;

namespace GameEngine.Model.Data
{
    public interface IThingTypeVO<IdType> : IVO where IdType : IComparable<IdType>
    {
        IViewVOId<IdType> ViewId { get; }
        List<IViewStateVO> ViewStates { get; set; }

        //IdType Id { get; }
        IThingTypeVOId Id { get; }

        //heath etc
    }

    public interface IThingTypeVOId : IId<int>{}

    public interface ISensingThingTypeVO<ItemVOId> : IThingTypeVO<ItemVOId>
         where ItemVOId : IComparable<ItemVOId>
    {
        //n guarda estado de variaveis calculadas on the fly
    }

    public interface IMovingThingTypeVO<IdType> : ISensingThingTypeVO<IdType> where IdType : IComparable<IdType>
    {
        float Velocity { get; set; }
    }

    public interface IThinkingThingTypeVO<IdType> : IMovingThingTypeVO<IdType> where IdType : IComparable<IdType>
    {
            
    }
}
